import request from "../../utils/request"
// pages/video/video.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    navList:[],//导航信息数据
    navId:'',//用来存储导航菜单的id
    videoList:[],//视频列表数据
    videoId:'',//用来存储播放视频的id
    videoIdAndTime:[],//用来存储播放的视频的id和播放时间
    isTrigger:false,//下拉刷新的标识
  },

  // 获取导航信息函数
  async getNavListData(){
    let result =await request("/video/group/list")
    // 截取部分信息
    let navListData=result.data.slice(0,10)
    // 默认去除第一个id,高亮
    let id = navListData[0].id
    // 更新数据
    this.setData({
      navList:navListData,
      navId:id
    })
    this.getVideoListData(this.data.navId)
  },
  // 点击改变导航菜单id
  changeNavId(event){
    let id = event.currentTarget.id
    // 更新数据
    this.setData({
      navId:id*1,
      videoList:[]
    })
    this.getVideoListData(id)
  },
  // 获取视频数据
  async getVideoListData(id){
    // 获取视频数据
    const userInfo = wx.getStorageSync("userInfo")
    // 判断是否有用户数据
    if(!userInfo){
      wx.showToast({
        title:"请先登录",
        icon:"none"
      })
      // 路由跳转
      wx.navigateTo({
        url:"/pages/login/login"
      })
    }
    //请求加载中
    wx.showLoading({
      title: '加载中',
    })
    let result =await request("/video/group",{id})
    // 请求加载结束
    wx.hideLoading()
    let index=0
    // 更新数据
    this.setData({
      videoList:result.datas.map(item=>{
        item.id=index++
        return item
      }),
      isTrigger:false
    })
  },

  // 视频的播放与暂停
  handlerVideo(event){
    // 获取视频id
    let id = event.currentTarget.id
    // 下一个视频播放上一个视频停止播放
    // 点击下一个视频,判断保存的页面实例上的id和新点击的id是否是同一个id,
    // 如果不是,那么就将页面实例对应的视频停掉
    // this.id !== videoId && this.videoContext && this.videoContext.stop()
    // // 将视频id放在页面实例身上
    // this.id=videoId
    //-----优化----------------------------------
    // 将点击播放的视频的id进行更新,用于控制封面和视频的显示和隐藏
    this.setData({ 
      videoId:id
    })
    // 创建控制video组件的实例
    this.videoContext=wx.createVideoContext(id)
    // 进行对比并跳转到指定的时间位置进行播放
    const {videoIdAndTime} = this.data
    // 查找数组中是否有之前播放过的视频如果有跳转到之前的播放位置
    const updataItem =videoIdAndTime.find(item=>item.vid===id) 
    if(updataItem){
      // 跳转到指定位置播放
      this.videoContext.seek(updataItem.currentTime)
    }
    // 播放
    this.videoContext.play()
  },
    // 视频播放进度的回调----------------------------------------------------
    handlerUpdate(event){
      // 先获取存储实时视频播放的对象的数据的数组
      const {videoIdAndTime} = this.data
      // 准备对象
      const idAndTime={
        vid:event.currentTarget.id,
        currentTime:event.detail.currentTime
      }
      // 先判断数组容器中是否已经存在了这个对象
      const idAndTimeItem=videoIdAndTime.find(item=>item.vid===idAndTime.vid)
      if(idAndTimeItem){
        // 更新时间
        idAndTimeItem.currentTime=event.detail.currentTime
      }else{
        videoIdAndTime.push(idAndTime)
      }
      // 更新数据
      this.setData({
        videoIdAndTime:videoIdAndTime
      })
    },
  // 视频播放结束时的回调
  handlerEnd(event){
    const { videoIdAndTime } = this.data
    videoIdAndTime.splice(videoIdAndTime.findIndex(item=>item.vid===event.currentTarget.id),1)
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 获取导航信息列表
    this.getNavListData()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },
  // 自定义视频下拉刷新触发的回调
  handlerRefresh(){
    // 下拉刷新获取当前导航页的视频
    this.getVideoListData(this.data.navId)
  },
  // 下拉触底的函数,这里的下拉刷新是假的
  handlerTolower(){
    const {videoList}=this.data
    const newArr=[...videoList.slice(0,8)]
    if(newArr){
      videoList.push(...newArr)
    }
    // 更新数据
    this.setData({
      videoList
    })

  },
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function ({from}) {
    if(from==="button"){
      return {
        title:"来自button",
        path:"/pages/video/video",
        imageUrl:"/static/images/2.jpg"
      }
    }else{
      return {
        title:"来自mune",
        path:"/pages/video/video",
        imageUrl:"/static/images/2.jpg"
      }
    }
  }
})